#ifndef __DRV_SD_CARD_H__
#define __DRV_SD_CARD_H__

class SD_Card
{
private:
  bool _sd_card_mounted = false;
  uint8_t _sd_card_type;
  String _sd_card_type_string;
  uint32_t _sd_card_size;
  float _sd_card_used_space;
public:
  SD_Card(/* args */);
  ~SD_Card();
  int begin();
  size_t get_file_size(const char* filename);
  int read(const char *filename, uint8_t* buffer);
  int read(const char *filename, uint8_t* buffer, uint32_t seek, size_t size);
  int read(const char *filename, uint8_t* buffer, size_t size);
  int write(const char *filename, const uint8_t* buffer, size_t size);
  int write(const char *filename, const char* buffer);
  int write(const char *filename, String buffer);
  int append(const char *filename, const uint8_t* buffer, size_t size);
  int append(const char *filename, const char* buffer);
  int append(const char *filename, String buffer);
};

#endif
